package com.anycc.cloud.core.service;

import com.anycc.cloud.common.dto.easyui.Tree;
import com.anycc.cloud.common.dto.query.PagingRequest;
import com.anycc.cloud.common.dto.query.PagingResponse;
import com.anycc.cloud.core.entity.Module;

import java.util.List;

/**
 * module service
 */
public interface ModuleService {

    /**
     * create a new zmodule
     *
     * @param module module
     * @return Module
     */
    Module create(Module module);

    /**
     * 构建module树
     *
     * @return list
     */
    List<Tree> tree();

    /**
     * paging query
     *
     * @param module        module
     * @param pagingRequest paging param
     * @return PagingResponse
     */
    PagingResponse<Module> findByPaging(Module module, PagingRequest pagingRequest);

    /**
     * delete module
     *
     * @param id module id
     */
    void delete(String id);

    /**
     * find module by id
     *
     * @param id module id
     * @return module
     */
    Module findById(String id);

    /**
     * update module
     * @param module module
     * @return Module
     */
    Module update(Module module);

    /**
     * build permission tree
     * @return list
     */
    List<Tree> permissionTree();

    /**
     * build permission tree(selected)
     * @param roleId role id
     * @return list
     */
    List<Tree> permissionTreeSelectedByRoleId(String roleId);


}
